package com.example.demo.model.response;

import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 全局统一响应模型
 * @param <T> 响应数据类型（成功时为具体业务数据，失败时为null）
 */
@Data
@NoArgsConstructor  // 无参构造（JSON反序列化需要）
public class ApiResult<T> {
    // 状态码（200=成功，其他=失败）
    private int code;
    // 响应消息（成功/失败描述）
    private String message;
    // 响应数据（成功时返回业务数据，失败时为null）
    private T data;

    /**
     * 成功响应（带数据）
     * @param data 业务数据（任意类型）
     * @param <T> 数据类型
     * @return 封装后的ApiResult
     */
    public static <T> ApiResult<T> success(T data) {
        ApiResult<T> result = new ApiResult<>();
        result.code = 200;
        result.message = "操作成功";
        result.data = data;
        return result;
    }
}